﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Mosaik_complete_
{
    [Serializable()]
    class Bildverwaltung
    {
        List<Bild> bilder;

        public Bildverwaltung() 
        {
            bilder = new List<Bild>();
        }
        public Bildverwaltung(string pfad)
        {
            bilder = new List<Bild>();
            string[] bilder_array = directory_and_file.get_pictures(pfad);

            for (int i=0; i<bilder_array.Length; i++)
            {
                Bild neues_bild = new Bild(bilder_array[i]);
                bilder.Add(neues_bild);
            }
        }

        public void add_one_picture(string pfad)
        {
            Bild neues_bild = new Bild(pfad);
            bilder.Add(neues_bild);
        }

        public string[] finde_bild(Color quellfarbe)
        {
            List<Bild> aussortierte = new List<Bild>();
            for (int i=0; i<bilder.Count; i++)
            {
                if (bilder[i].p_durchschnitt_blau >= quellfarbe.B - 10 && bilder[i].p_durchschnitt_blau <= quellfarbe.B + 10)
                    aussortierte.Add(bilder[i]);
            }
            
            List<Bild> aussortierte2 = new List<Bild>();
            for (int i = 0; i < aussortierte.Count; i++)
            {
                if (aussortierte[i].p_durchschnitt_gruen >= quellfarbe.G - 10 && aussortierte[i].p_durchschnitt_gruen <= quellfarbe.G + 10)
                    aussortierte2.Add(aussortierte[i]);
            }
            
            List<Bild> aussortierte3 = new List<Bild>();
            for (int i = 0; i < aussortierte2.Count; i++)
            {
                if (aussortierte2[i].p_durchschnitt_rot >= quellfarbe.R - 10 && aussortierte2[i].p_durchschnitt_rot <= quellfarbe.R + 10)
                    aussortierte3.Add(aussortierte2[i]);
            }

            string[] rueckgabe = new string[aussortierte3.Count];
            for(int i=0; i<aussortierte3.Count; i++)
            {
                rueckgabe[i] = aussortierte3[i].p_pfad;
            }
            return rueckgabe;
        }
        
    }
}
